]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
screencastService: Fix 'pipeline' option
authorrobert.mader@collabora.com <robert.mader@collabora.com>
Tue, 30 May 2023 18:23:14 +0000 (20:23 +0200)
committerMarge Bot <marge-bot@gnome.org>
Tue, 30 May 2023 22:21:12 +0000 (22:21 +0000)
When introducing the pipeline fallback mechanism, support for defining a
custom pipeline was unintentionally dropped, breaking extensions such as
EasyScreenCast.

Fixes 9cb40c4814b6be908edde4fb77a8d900a4cac51a

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2782>

js/dbusServices/screencast/screencastService.js

index 6ab92b53eb14ec2c07268c1895c62c3dc973ddc4..eda5c8293b3727eb617b32f3f7586a0aa9fc14f1 100644 (file)
@@ -87,6 +87,7 @@ var Recorder = class extends Signals.EventEmitter {
                 throw e;
         }
 
+        this._pipelineString = null;
         this._framerate = DEFAULT_FRAMERATE;
         this._drawCursor = DEFAULT_DRAW_CURSOR;
 
@@ -234,6 +235,23 @@ var Recorder = class extends Signals.EventEmitter {
         }
     }
 
+    *_getPipelineConfigs() {
+        if (this._pipelineString) {
+            yield {
+                pipelineString:
+                    `capsfilter caps=video/x-raw,max-framerate=%F/1 ! ${this._pipelineString}`,
+            };
+            return;
+        }
+
+        const fallbackSupported =
+                Gst.Registry.get().check_feature_version('pipewiresrc', 0, 3, 67);
+        if (fallbackSupported)
+            yield* PIPELINES;
+        else
+            yield PIPELINES.at(-1);
+    }
+
     startRecording() {
         return new Promise((resolve, reject) => {
             this._startRequest = {resolve, reject};
@@ -256,10 +274,7 @@ var Recorder = class extends Signals.EventEmitter {
                     this._nodeId = nodeId;
 
                     this._pipelineState = PipelineState.STARTING;
-                    const fallbackSupported =
-                        Gst.Registry.get().check_feature_version('pipewiresrc', 0, 3, 67);
-                    this._pipelineConfigs = fallbackSupported
-                        ? PIPELINES.values() : [PIPELINES.at(-1)].values();
+                    this._pipelineConfigs = this._getPipelineConfigs();
                     this._tryNextPipeline();
                 });
             this._sessionProxy.StartSync();